@Lemon
3年前 提问
1个回答
static函数在其他文件中调用方法
齐士忠
3年前
static函数是不能被其他文件直接调用的,可以用间接的方式。
方法一:通过非static函数的方式,我们可以定义一个普通的函数,让这个普通函数调用static函数,然后在把这个普通函数在头文件中声明。
(1.cpp)
#include
#include "2.h"
void main()
{
struct stru stru1;
use_my_static(&stru1);
stru1.f();
}
(2.cpp)
#include "2.h"
#include
static void my_static()
{
printf("我是外边的static的函数,我被调用了\n");
}
void use_my_static(struct stru *h)
{
h->f=my_static;
};
2.h头文件
static void my_static();
struct stru{
void (*f)();
};
void use_my_static(struct stru *h);
方法二:通过函数指针的方式, 我们只要得到这个函数的地址,那么就一定可以调用它,大家要知道static函数是对编译器起作用的,在运行时根本没有static了,有的只是函数地址,所以只要搞到函数地址管它是不是static的照调不误。
class Hack
{
private:
int x;
public:
int get_x();
static void func(Hack * pthis); // 静态成员函数
void func2(); // 非静态成员函数
};
void Hack::func(Hack * pthis)
{
int y = pthis->get_x(); // 访问对象的数据成员
}